/*
 * Element.h
 *
 *  Created on: 2010-01-11
 *      Author: adas
 */

#ifndef ELEMENT_H_
#define ELEMENT_H_

#include <vector>
#include <string>

#include "Bound.h"

class Solver;

class Element
{
private:
	friend class Solver;

	//double* point;
	std::vector<double> point;
	int n;

	Element(){}
	Element( const std::vector<double> & point_);

public:
//	Element( int n ){}
	Element( int n, double min, double max );
	Element( int n, const std::vector<Bound> &bounds );

	std::string toString() const;

	Element operator+(const Element &el) const;
	Element operator-(const Element &el) const;

	Element & operator*=(double num);
	Element & operator+=(const Element &el);
	Element & operator-=(const Element &el);

	double getValueAt(int dim) const;
	void setValueAt(int dim, double val);
	int getDimensionCount() const;

	~Element();
};

#endif /* ELEMENT_H_ */
